package _01Xor;

import java.util.*;

public class Test02DoubleArrayList {
    public static void main(String[] args) {
        int[][] ns = {{1, 2, 3, 4}, {5, 6, 7, 8}, {9, 10, 11, 12}};

        //此处直接打印ns,会输出ns的地址
        System.out.println(ns.length);

        //此处类似于C语言的指针 将二维数组第一组的地址赋给了arr0这个指针位置，int[]表示 int *
        int[] arr0 = ns[0];

        System.out.println(arr0.length);
        //两种语句的区别
        int[] arr1 = {1,2,3,4,56,4};

        //此处相当于开辟了一片存储区域赋给了arr2
        int[] arr2 = new int[6];

//        System.out.println(arr1);
//        System.out.println(arr2);
//        遍历输出一维数组？
        for (int i = 0; i < arr1.length; ++i) {
            System.out.print(arr1[i]+" ");
        }
        System.out.println();
        for (int i = 0; i < arr2.length; ++i) {
            System.out.print(arr2[i]+" ");
        }
        System.out.println();
        for (int n : arr1) {
            System.out.print(n+" ");
        }
        System.out.println();
        //利用Array标准库快速打印
        System.out.println("以下内容是 标准库函数 输出一维数组的结果 \n");
        System.out.println(Arrays.toString(arr1));
        //此处打印二维数组只会打印出 二维数组第一位的地址，故此方法只适用于一维数组的打印
        System.out.println(Arrays.toString(ns));
        System.out.println();

        System.out.println("利用双重循环函数输出 ：");
        for (int[] arrXXX: ns) {
            for (int n: arrXXX) {
                //这两个地方的迭代变量 与int arr0 = ns[0];没有任何关系
                System.out.print(n);
                System.out.print(", ");
            }
        }
        System.out.println();
        System.out.println("利用标准库函数输出 ：");
        System.out.println(Arrays.deepToString(ns));
    }
}
